package br.com.ponto.dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.Query;

import br.com.ponto.model.Usuario;
import br.com.ponto.model.UsuarioRole;

public class UsuarioDAO {
	
	public Usuario autentica(String nomeUsuario, String senha) {
		EntityManager em = EntityManagerFactoryHelper.getFactory().createEntityManager();
		
		Query query = em.createQuery("SELECT obj FROM Usuario obj where obj.nomeUsuario = :nomeUsuario and obj.senha = :senha");
		query.setParameter("nomeUsuario", nomeUsuario);
		query.setParameter("senha", senha);
		Usuario usuario;
		try {
			usuario = (Usuario) query.getSingleResult();
		} catch (NoResultException e) {
			return null;
		}
		em.close();
		return usuario;
	}
	
	public List<UsuarioRole> carregaRoles(Usuario usuario) {
		EntityManager em = EntityManagerFactoryHelper.getFactory().createEntityManager();
		
		Query query = em.createQuery("SELECT obj FROM UsuarioRole obj where obj.usuario.idUsuario = :idUsuario");
		query.setParameter("idUsuario", usuario.getIdUsuario());
		
		@SuppressWarnings("unchecked")
		List<UsuarioRole> lista = query.getResultList();
		
		em.close();
		return lista;
	}

}
